﻿using NLog;
using System;

namespace Zocono.Infrastructure.Common
{
    public class NlogUtilScoped
    {
        private readonly Logger _logger = LogManager.GetCurrentClassLogger();
        private readonly string _sessionId;
        private readonly DateTime _createTime;

        public NlogUtilScoped()
        {
            _sessionId = System.Guid.NewGuid().ToString("N");
            _createTime = DateTime.Now;
        }
        private string _formatMessage(string msg)
        {
            return $"{_sessionId} {Math.Round(DateTime.Now.Subtract(_createTime).TotalMilliseconds, 0)} {msg}";
        }
        public void Debug(string msg)
        {
            msg = _formatMessage(msg);
            _logger.Debug(msg);
        }

        public void Error(string msg)
        {
            msg = _formatMessage(msg);
            _logger.Error(msg);
        }

        public void Fatal(string msg)
        {
            msg = _formatMessage(msg);
            _logger.Fatal(msg);
        }

        public void Info(string msg)
        {
            msg = _formatMessage(msg);
            _logger.Info(msg);
        }

    }
}